<?php

$logger = Zend_Registry::get('LOG');
$logger->log('view postajax.phtml', Zend_Log::INFO);

//echo "alert('toto');";

echo "$('.input > input').removeClass('erreur');";
//echo "$('.input > input').removeClass('pas_erreur');";
//error_log($_POST['ecrase_table']);

$mysql_host=isset($_POST['mysql_host']) ? $_POST['mysql_host'] : "";
$mysql_dbname=isset($_POST['mysql_dbname']) ? $_POST['mysql_dbname'] : "";
$mysql_login=isset($_POST['mysql_login']) ? $_POST['mysql_login'] : "";
$mysql_password=isset($_POST['mysql_password']) ? $_POST['mysql_password'] : "";
$login=isset($_POST['login']) ? $_POST['login'] : "";
$mdp=isset($_POST['mdp']) ? $_POST['mdp'] : "";
$mysql_prefixe=isset($_POST['mysql_prefixe']) ? $_POST['mysql_prefixe'] : "";
$ecrase_table=isset($_POST['ecrase_table']) ? $_POST['ecrase_table'] : 0;

$msg_js='';
$code_js='';

// ----------------------------------------------------------------------------
// ----------------------   VERIFICATION --------------------------------------
// ----------------------------------------------------------------------------

//echo "alert('$mysql_host');";
if ($mysql_host == '')
{
	$msg_js.='Host Mysql non renseigné. \n';
	$code_js.='$("#mysql_host").parent().parent().parent().addClass("error");';
} 
if ($mysql_dbname == '')
{
	$msg_js.='Nom de la base de données non renseigné. \n';
	//$code_js.='$("#mysql_dbname").addClass("erreur");';
	$code_js.='$("#mysql_dbname").parent().parent().parent().addClass("error");';
} 
/*if ($mysql_login == '')
{
	$msg_js.='Login de connexion à base de données non renseigné. \n';
	$code_js.='$("#mysql_login").addClass("erreur");';
}*/

$expreg='[*$/\\()!"&\'`]'; //utilisé également pour le test de ogin et de mot de passe
if ($mysql_prefixe != '' && preg_match("@$expreg@",$mysql_prefixe))
{
	$msg_js.='Le préfixe de table contient des caractères invalides . \n';
	//$code_js.='$("#mysql_prefixe").addClass("erreur");';
	$code_js.='$("#mysql_prefixe").parent().parent().parent().addClass("error");';
}

if ($msg_js == '') //si pas d'erreur on tente une tentative de connexion à la base
{
	$mysqli=@new mysqli($mysql_host,$mysql_login,$mysql_password,$mysql_dbname);
	if (mysqli_connect_error()) 
	{
		$msg_js.='Erreur de connexion à la base de données. Vérifier les différents paramètres mysql. \n';
		//$code_js.='$("#mysql_host").addClass("erreur");';
		//$code_js.='$("#mysql_dbname").addClass("erreur");';
		//$code_js.='$("#mysql_login").addClass("erreur");';
		//$code_js.='$("#mysql_password").addClass("erreur");';
		$code_js.='$("#mysql_host").parent().parent().parent().addClass("error");';
		$code_js.='$("#mysql_dbname").parent().parent().parent().addClass("error");';
		$code_js.='$("#mysql_password").parent().parent().parent().addClass("error");';
		$code_js.='$("#mysql_login").parent().parent().parent().addClass("error");';
	} else {
		//$code_js.='$("#mysql_dbname").addClass("pas_erreur");';
		//$code_js.='$("#mysql_host").addClass("pas_erreur");';
		//$code_js.='$("#mysql_login").addClass("pas_erreur");';
		//$code_js.='$("#mysql_password").addClass("pas_erreur");';
		$logger->log("ecrase_table=$ecrase_table", Zend_Log::INFO);
		if ($ecrase_table == 0)
		{
			
			//on vérifie que des tables de même nom n'existe pas déjà
			$tab_tables=array('article','article_client_nn','categorie','client',
							  'commande','commande_ligne','depense','devis','devis_ligne',
							  'fournisseur','taux_tva','utilisateur');
			
			foreach($tab_tables as $table)
			{
                $req="SHOW TABLES LIKE '$mysql_prefixe$table'";
				$result=$mysqli->query($req);
				if ($result->num_rows >= 1)
                {
                    $msg_js.="La table $mysql_prefixe$table existe déjà. \\n";
					//$code_js.='$("#mysql_prefixe").addClass("erreur");';
					$code_js.='$("#mysql_prefixe").parent().parent().parent().addClass("error");';
                }
				
				
			}
			
			
		}
		
		
		
	}
	
	
}


if (strlen($login) < 4 || preg_match("@$expreg@",$login))
{
	$msg_js.='Login de connexion à Odcf trop court ou caractères invalides. \n';
	//$code_js.='$("#login").addClass("erreur");';
	$code_js.='$("#login").parent().parent().parent().addClass("error");';
} else {
	//$code_js.='$("#login").addClass("pas_erreur");';
}
if (strlen($mdp) < 6 || preg_match("@$expreg@",$mdp))
{
	$msg_js.='Mot de passe de connexion à Odcf trop court ou caractères invalides. ';
	//$code_js.='$("#mdp").addClass("erreur");';
	$code_js.='$("#mdp").parent().parent().parent().addClass("error");';
} else {
	//$code_js.='$("#mdp").addClass("pas_erreur");';
}


if ( is_writable(dirname(__FILE__) . '/../../../configs/opendcf.ini'))
{
	$code_js.='$("#config_ini").html("<p class=\'text-success\'>Ok</p>");';
} else {
	$code_js.='$("#config_ini").html("<p class=\'text-error\'>Veuillez vérifier vos droits.</p>");';
	$msg_js.='Le fichier application/configs/opendcf.ini doit être accessible en écriture. ';
}


if ($code_js != '')
{
	echo "$code_js;";
}

if ($msg_js != '')
{
	$logger->log("msg_js = $msg_js", Zend_Log::INFO);
	//$msg_js=$msg_js;
	echo "alert('$msg_js');";
	
	exit; //Si erreur on arrete le script
}



// --------------------------------------------------------------------------------
// -------------------   CREATION DE LA BASE --------------------------------------
// --------------------------------------------------------------------------------

$logger->log("Valeurs saisie OK. Etape suivante : création des tables", Zend_Log::INFO);

	//$mysqli // Si on est ici c'est que la connection à la base à réussi, on utilise donc le connecteur
	$tab_req[]="DROP TABLE IF EXISTS `${mysql_prefixe}article`";
	$tab_req[]="CREATE TABLE IF NOT EXISTS `${mysql_prefixe}article` (
			  `id_article` int(11) NOT NULL auto_increment,
			  `reference_article` varchar(50) default NULL,
			  `nom_article` varchar(50) default NULL,
			  `id_categorie` int(11) default NULL COMMENT 'permet de regrouper les articles en catégorie',
			  `libelle_article` text,
			  `prix_ht` decimal(20,5) default NULL,
			  `taux_tva` decimal(5,2) default NULL,
			  `actif` tinyint(1) default NULL,
			  PRIMARY KEY  (`id_article`)
			) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ";
			
	$tab_req[]="DROP TABLE IF EXISTS `${mysql_prefixe}article_client_nn`";
	$tab_req[]="CREATE TABLE IF NOT EXISTS `${mysql_prefixe}article_client_nn` (
  `id_article` int(11) NOT NULL default '0',
  `id_client` int(10) NOT NULL default '0',
  PRIMARY KEY  (`id_article`,`id_client`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";

	$tab_req[]="DROP TABLE IF EXISTS `${mysql_prefixe}client`;";
	$tab_req[]="CREATE TABLE IF NOT EXISTS `${mysql_prefixe}client` (
  `rue` varchar(50) default NULL,
  `id_client` int(11) NOT NULL auto_increment,
  `nom_cli` varchar(100) default NULL,
  `nom_cli_complement` varchar(100) default NULL,
  `ville` varchar(50) default NULL,
  `code_postal` varchar(10) default NULL,
  `pays` varchar(50) default NULL,
  `num_tva` varchar(45) default NULL,
  `login` varchar(45) default NULL,
  `password` varchar(45) default NULL,
  `mail` varchar(100) default NULL,
  `actif` tinyint(4) default NULL,
  `remise_pourcent` decimal(5,2) default NULL,
  PRIMARY KEY  (`id_client`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;";

	$tab_req[]="DROP TABLE IF EXISTS `${mysql_prefixe}commande`;";
	$tab_req[]="CREATE TABLE IF NOT EXISTS `${mysql_prefixe}commande` (
  `id_commande` int(11) NOT NULL auto_increment,
  `id_client` int(10) default NULL,
  `taux_tva` decimal(10,5) default NULL COMMENT 'Taux de tva par défaut pout toutes les lignes de la commande.',
  `date_creation` date default NULL,
  `num_facture` int(10) default NULL,
  `est_modele` tinyint(1) default NULL,
  `commentaire` varchar(250) default NULL,
  `remise_montant` decimal(20,5) default NULL,
  `remise_pourcent` decimal(5,2) default NULL,
  PRIMARY KEY  (`id_commande`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;";

	$tab_req[]="DROP TABLE IF EXISTS `${mysql_prefixe}commande_ligne`;";
	$tab_req[]="CREATE TABLE IF NOT EXISTS `${mysql_prefixe}commande_ligne` (
  `id_commande_ligne` int(11) NOT NULL auto_increment,
  `id_commande` int(11) default NULL,
  `id_article` int(11) default NULL,
  `reference_article` varchar(50) default NULL,
  `nom_article` varchar(50) default NULL,
  `libelle_article` text,
  `prix_ht` decimal(20,5) default NULL,
  `taux_tva` decimal(5,2) default NULL,
  PRIMARY KEY  (`id_commande_ligne`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;";

	$tab_req[]="DROP TABLE IF EXISTS `${mysql_prefixe}depense`;";
	$tab_req[]="CREATE TABLE IF NOT EXISTS `${mysql_prefixe}depense` (
  `id_depense` int(11) NOT NULL auto_increment,
  `id_four` int(11) default NULL,
  `libelle_depense` varchar(50) default NULL,
  `taux_tva` decimal(5,2) default NULL,
  `montant_ht` decimal(20,5) default NULL,
  PRIMARY KEY  (`id_depense`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;";

	$tab_req[]="DROP TABLE IF EXISTS `${mysql_prefixe}devis`;";
	$tab_req[]="CREATE TABLE IF NOT EXISTS `${mysql_prefixe}devis` (
  `id_devis` int(11) NOT NULL auto_increment,
  `id_client` int(10) default NULL,
  `taux_tva` decimal(10,5) default NULL COMMENT 'Taux de tva par défaut pout toutes les lignes du devis.',
  `date_creation` date default NULL,
  `accept_le` date default NULL,
  `refus_le` date default NULL,
  `est_devenu_la_commande` int(10) default NULL,
  `est_modele` tinyint(1) default NULL,
  `commentaire` varchar(250) default NULL,
  `remise_montant` decimal(20,5) default NULL,
  `remise_pourcente` decimal(5,2) default NULL,
  PRIMARY KEY  (`id_devis`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;";

	$tab_req[]="DROP TABLE IF EXISTS `${mysql_prefixe}devis_ligne`;";
	$tab_req[]="CREATE TABLE IF NOT EXISTS `${mysql_prefixe}devis_ligne` (
  `id_devis_ligne` int(11) NOT NULL auto_increment,
  `id_devis` int(11) default NULL,
  `id_article` int(11) default NULL,
  `reference_article` varchar(50) default NULL,
  `nom_article` varchar(50) default NULL,
  `libelle_article` text,
  `prix_ht` decimal(20,5) default NULL,
  `taux_tva` decimal(5,2) default NULL,
  PRIMARY KEY  (`id_devis_ligne`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;";
	
	$tab_req[]="DROP TABLE IF EXISTS `${mysql_prefixe}taux_tva`;";
	$tab_req[]="CREATE TABLE IF NOT EXISTS `${mysql_prefixe}taux_tva` (
  `taux_tva` decimal(10,5) NOT NULL,
  PRIMARY KEY  (`taux_tva`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='taux de tva utilisable.Utilisé pour remplir les combos';
";
	
	$tab_req[]="DROP TABLE IF EXISTS `${mysql_prefixe}utilisateur`;";
	$tab_req[]="CREATE TABLE IF NOT EXISTS `${mysql_prefixe}utilisateur` (
  `login` varchar(20) NOT NULL,
  `password` varchar(50) NOT NULL,
  PRIMARY KEY  (`login`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";

$tab_req[]="DROP TABLE IF EXISTS `${mysql_prefixe}societe`;";
$tab_req[]="CREATE TABLE IF NOT EXISTS `${mysql_prefixe}societe` (
`id_societe` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nom_societe` VARCHAR( 155 ) NOT NULL ,
`adresse_societe` VARCHAR( 255 ) NOT NULL ,
`adresse_complementaire_societe` VARCHAR( 255 ) NULL ,
`ville_societe` VARCHAR( 155 ) NOT NULL ,
`cp_societe` VARCHAR( 5 ) NOT NULL ,
`siret_societe` VARCHAR( 14 ) NOT NULL ,
`id_tva` INT NOT NULL ,
`logo` VARCHAR( 500 ) NULL
) ENGINE = MYISAM COMMENT = 'Administration de la société qui utilise Opendcf';
";


$login=$mysqli->real_escape_string($login);
$mdp=md5($mdp);
$tab_req[]="INSERT INTO `${mysql_prefixe}utilisateur` (login,password) VALUES ('$login','$mdp')";


$msg_js_install=''; //même besoin que $msg_js mais création d'un autre var pour éviter la confusion

foreach ($tab_req as $req)
{
	if (! @$mysqli->query($req))
	{
		$msg_js_install.="Erreur d'execution de $req " . $mysqli->error . ' ';
		break;//une erreur on arrete les requetes
	}
}

if ($msg_js_install != '')
{
	$logger->log("msg_js_install = $msg_js_install", Zend_Log::INFO);
	$msg_js_install=str_replace("\r\n",'\n',addslashes($msg_js_install));
	echo "alert('$msg_js_install');";
	exit; //si erreur on arrete le script
}




$logger->log("Tables Créées. Etapes suivante : création de config.ini", Zend_Log::INFO);
//on renseigne config.ini.
//Renseigner resources.db.adapter rendra l'accès à la page d'authentification possible et l'access à l'installeur impossible

$str="[production]
resources.db.adapter = 'PDO_MYSQL'
resources.db.params.host = '$mysql_host'
resources.db.params.dbname = '$mysql_dbname'
resources.db.params.username = '$mysql_login'
resources.db.params.password = '$mysql_password'

; param pour préfixe de tables
resources.db.params.prefixe = '$mysql_prefixe'
";
	
$ecriture = file_put_contents(dirname(__FILE__) . '/../../../configs/opendcf.ini',$str);

if ($ecriture === false)
{
	$logger->log("Erreur création de opendcf.ini", Zend_Log::INFO);
	echo "alert('Erreur de création du fichier opendcf.ini');";
	exit;
}



$code_fin="alert('Configuration effectuée avec succès ! Vous pouvez maintenant vous connecter à Odcf.');";
$code_fin.="window.location.href='index.php';";

echo $code_fin;
$logger->log("Fin sans erreur de l'installeur", Zend_Log::INFO);
